import App from '../../../base'

export default App.controller('UserOauthController', function(
  $http,
  $scope,
  $q
) {
  const _reset = function() {
    $scope.ui = {
      hasError: false,
      errorMessage: ''
    }
    $scope.providers = window.oauthProviders
    $scope.thirdPartyIds = window.thirdPartyIds
  }
  const _unlinkError = (providerId, err) => {
    $scope.providers[providerId].ui.hasError = true
    $scope.providers[providerId].ui.errorMessage =
      err && err.data && err.data.message ? err.data.message : 'error'
  }

  $scope.unlink = providerId => {
    if (window.ExposedSettings.isOverleaf) {
      // UI
      $scope.providers[providerId].ui = {
        hasError: false,
        isProcessing: true
      }
      // Data for update
      const data = {
        _csrf: window.csrfToken,
        link: false,
        providerId
      }
      $http
        .post('/user/oauth-unlink', data)
        .catch(error => {
          $scope.providers[providerId].ui.isProcessing = false
          _unlinkError(providerId, error)
        })
        .then(response => {
          $scope.providers[providerId].ui.isProcessing = false
          if (response.status === 200) {
            $scope.thirdPartyIds[providerId] = null
          } else {
            _unlinkError(providerId, response)
          }
        })
    }
  }

  _reset()
})
